//setTimeout(function () {
//    AppStatus.timeout();
//}, (3 * 60 * 10000)
//        );//(3 * 60 * 1000)
var socket = null;
var Template = {
    isLoaded: false,
    init: function (data) {
        Program.id_channel = data.id_channel;
        Program.id_tvshow = data.id_tvshow;
        Program.background_show = data.background_show;
        Program.logo_channel = data.logo_channel;
        Program.type_qa = data.type_qa;
        Program.id_show = data.id_show;
        Program.name = data.name;
        Program.time = data.time;
        Program.sound_welcome = data.sound_welcome;
        Program.sound_bg = data.sound_bg;
        Program.is_question_recieved = false;
//        $(".Header_text .around-marquee").html('<label>' + (data.name == undefined ? "" : data.name) + '</label>');
//        setTimeout(function () {
//            if ($('.around-marquee').width() < $('.around-marquee label').width()) {
//                $('.around-marquee label').addClass('marquee');
//            }
//        }, 500);
    },
    active: function (page, type, success, error) {
        var error_count = 0; //error 1 lần là callback luôn, lần 2 ko callback
        var success_count = 0; //load 2 lần thì sẽ call back

        var logo = new Image();
        logo.src = _this.Base_Upload + Program.logo_channel;
        logo.onload = function () {
            _this.uiHeader({text: Program.name, image: logo.src, page: page});
            success_count += 1;
            if (success_count === 2) {
                success();
                Toast.close();
            }
        };
        logo.onerror = function () {
            error_count += 1;
            if (error_count == 1) {
                if (typeof error == 'function')
                    error();
                if (type == "online") {
                    Toast.button({text: "Tải lại hình nền chương trình đang phát.", position: "bottom", click: function () {
                            Toast.buttonLoad("Tải lại hình nền chương trình đang phát...");
                            if (navigator.onLine) {
                                Template.ajax(success); //gọi lại gói template từ online
                            } else {
                                Toast.button({text: "Vui lòng kiểm tra lại kết nối.", position: "bottom", click: function () {
                                        Toast.close();
                                    }
                                });
                            }
                        }
                    });
                }
                else {
                    Template.ajax(success); //gọi lại gói template từ online
                }
            }
        };
        var background = new Image();
        background.src = _this.Base_Upload + Program.background_show;
        background.onload = function () {
            $("#page_indexindex .UI_Body, #page_indexindex .UI_Body").css({background: "url(" + background.src + ")"});
            success_count += 1;
            if (success_count === 2) {
                success();
                Toast.close();
            }
        };
        background.onerror = function () {
            error_count += 1;
            if (error_count == 1) {
                if (typeof error == 'function')
                    error();
                if (type == "online") {
                    Toast.button({text: "Tải lại hình nền chương trình đang phát.", position: "bottom", click: function () {
                            Toast.buttonLoad("Tải lại hình nền chương trình đang phát...");
                            if (navigator.onLine) {
                                Template.ajax(success); //gọi lại gói template từ online
                            } else {
                                Toast.button({text: "Vui lòng kiểm tra lại kết nối.", position: "bottom", click: function () {
                                        Toast.close();
                                    }
                                });
                            }
                        }
                    });
                } else {
                    Template.ajax(success); //gọi lại gói template từ online
                }
            }
        };
    },
    get: function (page, success, error) {
        if (Program.id_tvshow > 0 && Program.background_show != "" && Program.logo_channel != "") {
            this.active(page, "local", success, error);
        } else {
            this.ajax(page, success, error);
        }
    },
    ajax: function (page, success, error) {
        $.ajax({
            url: _this.Base_Api + "template-show?id_tvshow=" + Program.id_tvshow,
            success: function (data) {
                console.log("online active");

                //Program.id_channel, Program.id_tvshow, data.name, data_online.bg, data_online.logo, data_online.sound_welcome, data_online.sound_bg
                //Template.save();
                Template.active(page, "online", success, error);
            }, error: function () {
                if (typeof error == 'function')
                    error();
                Toast.button({text: "Vui lòng kiểm tra lại kết nối.", position: "bottom", click: function () {
                        Toast.close();
                    }
                });
            }
        });
    },
    save: function (data) {
        _this.storage.set("Program", JSON.stringify(data));
    }
};
var Program = {
    id_channel: 0,
    id_tvshow: 0,
    background_show: "",
    logo_channel: "",
    name: "",
    time: "",
    id_show: 0,
    id_question: 0,
    id_answered: 0,
    is_statistic: 0,
    is_showstopped: 0,
    other_opinion: 0,
    type_qa: 0,
    data_question: "",
    is_question_recieved: false,
    sound_welcome: "",
    sound_bg: "",
    LastQuestion: {
        init: function () {
            if (this.isExist()) {
                var data = this.data();
                Program.id_show = data.show_id;
                Program.id_question = data.id_question;
                Program.is_showstopped = data.stop_vote;
                Program.other_opinion = data.other_opinion;
                Program.type_qa = data.type_qa;
                Program.is_statistic = data.isshowannalytic;
                Program.is_share = data.isshare;
                Program.data_question = data.question;
            }
        },
        data: function () {
            return JSON.parse(_this.storage.get("lastquestion_" + Program.id_tvshow));
        },
        save: function (data) {

            Program.id_show = data.show_id;
            Program.id_question = data.id_question;
            Program.is_showstopped = data.stop_vote;
            Program.other_opinion = data.other_opinion;
            Program.type_qa = data.type_qa;
            Program.is_statistic = data.isshowannalytic;
            Program.is_share = data.isshare;
            Program.data_question = data.question;
            data.time = _this.Timestamp.getDateTime();
            _this.storage.set("lastquestion_" + Program.id_tvshow, JSON.stringify(data));
        },
        remove: function () {
            _this.storage.remove("lastquestion_" + Program.id_tvshow);
            Program.id_show = 0;
            Program.id_question = 0;
            Program.is_showstopped = 0;
            Program.other_opinion = 0;
            Program.is_statistic = 0;
            Program.is_share = 0;
            Program.data_question = "";
        },
        isExist: function () {
            if (_this.storage.get("lastquestion_" + Program.id_tvshow) != "") {
                return true;
            }
            return false;
        },
        add: {
            answered: function () {
                if (Program.LastQuestion.isExist()) {
                    var data = Program.LastQuestion.data();
                    data.id_answered;
                    Program.LastQuestion.save(data);
                }
            }
        }
    },
    convertTime: function (deltaTime) {
        var miligiay = deltaTime % (60 * 1000);
        var miligay_ = miligiay % 1000;
        var giay = (miligiay - miligay_) / 1000;
        var phut = (deltaTime - miligiay) / 60 / 1000;
        if (phut < 10) {
            phut = "0" + phut;
        }
        if (giay < 10) {
            giay = "0" + giay;
        }
        return phut + " phút " + giay + " giây " + miligay_ + " ms";
    },
    activeContent: function () {
        Answer.isStop = false;
        Toast.close();

        Dialog.close();
        $("#page_indexindex .Scroller_Inner").empty();
        if (_this.storage.get("Answer") != "" && Answer.data.id_show != Program.id_show) {
            Answer.reset();
        }

        //Render html

        // var htmlShare = data.is_share == 1 ? '<a class="btnShare"><i class="fa fa-facebook-square "></i> Share</a>' : '';
        var htmlStatistic = Program.is_statistic == 1 ? '<a class="btnStatistic"><i class="fa fa-bar-chart"></i>Thống kê</a>' : '';
        var Html_Question = '<div class="Question_wrapper zoomIn animated">\n\
                <div class="Block"></div>\n\
                <div class="Question">\n\
                    <div class="Inner">' + Program.data_question.question.stripslashes() + '<div class="alignRight">' + htmlStatistic + '</div> </div>\n\
            </div>';
        var count = 0;
        var ItemAnswer = '', ItemStatisticAnswer = '', OtherAnswer = '';
        $.each(Program.data_question.choice, function (index, item) {
            count++;
            ItemAnswer += '<a id="answerid_' + count + '" data-id="' + count + '"><span>' + count + '</span>' + item[0].stripslashes() + '</a>';
            ItemStatisticAnswer += '<a class="answer-statistics"><span>' + count + '</span>' + item[0].stripslashes() + '</a>';
        });
        if (Program.other_opinion == 1) {
            count++;
            OtherAnswer = '<a class="other_opinion" id="answerid_' + count + '" data-id="' + count + '"><span>' + count + '</span>Ý kiến khác</a>';
        }

        var HtmlAnswer = '<div data-id_question="' + Program.id_question + '" class="Answers_wrapper"><div class="Answers Answers_' + count + '">' + ItemAnswer + OtherAnswer + '</div></div>';
        $("#page_indexindex .Scroller_Inner").html(Html_Question + HtmlAnswer);
        if ($("#page_indexstatistic").hasClass("page_active")) {
            $(".Des_Answer").html(ItemStatisticAnswer + OtherAnswer); //Cập nhật câu trả lời
            initCharts("", count); // Cập nhật thống kê
        }

        $(".alignRight a").UI_AddClassHover("hover");
        //Tính chiều cao của đáp án, căn chỉnh

        var bH = $("#page_indexindex .UI_Body").height();
        var sH = $("#page_indexindex .Scroller_Inner").innerHeight();
        var aH = $("#page_indexindex .Answers").height();
        var qH = $("#page_indexindex .Question").height() + $("#page_indexindex .Block").height() + 8;
        if (sH <= bH) {//Scroller_Inner < UI_Body
            $(".Answers_wrapper").height(bH - qH);
            $(".Answers").addClass("Absolute").height(aH);
        }

        $(".UI_TextPanel textarea").val("");
        function caseOptions(number) {
            switch (number) {
                case 1://User login
                    Toast.progress({});
                    $.ajax({
                        url: _this.Base_Api + "answer-update",
                        data: {tvshow_id: Program.id_tvshow, user_id: User.id, channel_id: Program.id_channel, show_id: Program.id_show, question_id: Program.id_question, choice: Statistic.id_answered, change: Program.type_qa},
                        success: function (data) {
                            console.log(data);
                            if (data == "200" || data == "205") {
                                Statistic.id_answered = id_answered;
                                //4. Client tạo thống kê
                                var type_qa = Program.type_qa == 1 ? 1 : null;
                                console.log("type: " + type_qa);
                                console.log("old :" + Program.old_answer);
                                console.log("now: " + Statistic.id_answered);
                                socket.emit('creatAnalytics', {id_tvshow: Program.id_tvshow, id_vote: Statistic.id_answered, user_id: User.id, id_channel: Program.id_channel, id_question: Program.id_question, id_vote_old: Program.old_answer, type: type_qa});
                                Statistic.save();
                                Answer.save.answered_number();
                                if (Program.is_statistic == 1) {
                                    _this.redirect("index/statistic");
                                } else {
                                    Toast.progressNext();
                                }
                            } else {
                                Toast.progressNextToToast({text: "Bạn đã trả lời, xin vui lòng đợi.", id: "gv"});
                            }
                        }, error: function (jqXHR, textStatus) {
                            if (textStatus == "timeout") {
                                Toast.progressNext({text: "<h6>Kết nối quá lâu.</h6><p>Vui lòng kiểm tra internet hoặc thử lại.</p>", type: "failure", height: 132, width: 190, turnoff: 3500});
                            } else {
                                Toast.progressNext({text: "Không có kết nối.", type: "failure", height: 98, width: 112, turnoff: 2000});
                            }
                        }
                    });
                    break;
                case 2://Chỉ tạo thống kê
                    Toast.progress({});
                    Statistic.id_answered = id_answered;
                    $(".Answers a.active").removeClass("active");
                    $("#answerid_" + Statistic.id_answered).addClass("active");
                    var type_qa = Program.type_qa == 1 ? 1 : null;
//                    console.log("type: " + type_qa);
//                    console.log("old :" + Program.old_answer);
//                    console.log("now: " + Statistic.id_answered);

                    socket.emit('creatAnalytics', {id_tvshow: Program.id_tvshow, id_vote: Statistic.id_answered, user_id: User.id, id_channel: Program.id_channel, id_question: Program.id_question, id_vote_old: Program.old_answer, type: type_qa});
                    Statistic.save();
                    Answer.save.answered_number();
                    if (Program.is_statistic == 1) {
                        _this.redirect("index/statistic");
                    } else {
                        Toast.progressNext();
                    }
                    break;
                case 3:
                    TextPanel.show(function () {

                        $(".UI_TextPanel .Panel_Submit").on("tap", function () {
                            var content = $(".UI_TextPanel textarea").val();
                            if ($.trim(content) != "") {
                                $(".UI_TextPanel .Panel_Submit").off("tap");
                                Toast.progress({});
                                $(".UI_TextPanel textarea").blur();
                                TextPanel.close();
                                $.ajax({
                                    url: _this.Base_Api + 'other-opinion',
                                    data: {user_id: User.id, tvshow_id: Program.id_tvshow, id_show_log: Program.id_show, id_question: Program.id_question, content: content},
                                    success: function (data) {

                                        if (data == 200) {
                                            //$(".UI_TextPanel button").off("click");
                                            Statistic.id_answered = id_answered;
                                            $(".Answers a.active").removeClass("active");
                                            $("#answerid_" + Statistic.id_answered).addClass("active");
                                            var type_qa = Program.type_qa == 1 ? 1 : null;
//                                            console.log("type: " + type_qa);
//                                            console.log("old :" + Program.old_answer);
//                                            console.log("now: " + Statistic.id_answered);
                                            socket.emit('creatAnalytics', ({id_tvshow: Program.id_tvshow, id_vote: Statistic.id_answered, user_id: User.id, id_channel: Program.id_channel, id_question: Program.id_question, id_vote_old: Program.old_answer, type: type_qa}));
                                            Statistic.save();
                                            Answer.save.answered_number();
                                            if (Program.is_statistic == 1) {
                                                _this.redirect("index/statistic");
                                            } else {
                                                Toast.progressNext();
                                            }
                                        } else {
                                            Toast.progressNextToToast({text: "Có lỗi khi gửi ý kiến của bạn.", id: "gv", type: "warning"});
                                        }
                                    }, error: function (jqXHR, textStatus) {
                                        if (textStatus == "timeout") {
                                            Toast.progressNext({text: "<h6>Kết nối quá lâu.</h6><p>Vui lòng kiểm tra internet hoặc thử lại.</p>", type: "failure", height: 132, width: 190, turnoff: 3500});
                                        } else {
                                            Toast.progressNext({text: "Không có kết nối.", type: "failure", height: 98, width: 112, turnoff: 2000});
                                        }
                                    }
                                });
                            } else {
                                Toast.show({text: "Vui lòng nhập ý kiến của bạn.", id: "gv"});
                            }

                        });
                    });
                    break;
                default :
                    break;
            }
        }
        $(".Answers a").off("tap");
        var id_answered = 0, old_answer = null;
        $(".Answers a").on("tap", function () {
            if (!Answer.isStop) {
                old_answer = $(".Answers a.active").length == 0 ? null : $(".Answers a.active").data("id"); //Lấy câu trả lời cũ
                id_answered = $(this).data("id");
                Statistic.id_question = Program.id_question;
                Statistic.old_answer = old_answer;
                Program.old_answer = old_answer;
                if (Program.type_qa == 1) {//Chương trình thời sự
                    if (Statistic.statusAnswered(Program.id_question) == 'pending') {
                        Toast.show({text: "Lựa chọn của bạn đang được chương trình xử lý.", id: "gv", width: 228});
                    } else {
                        if ($(this).hasClass("other_opinion")) {//Bấm vào ý kiến khác
                            if (!$(this).hasClass("active")) {
                                caseOptions(3);
                            } else {
                                Toast.show({text: "Bạn đã lựa chọn đáp án này.", id: "gv", type: "warning"});
                            }
                        } else {//Bấm vào đáp án
                            if (!$(this).hasClass("active")) {

                                $(".Answers a.active").removeClass("active");
                                $(this).addClass("active");
                                if (User.isLogin()) {//Đã login
                                    caseOptions(1);
                                } else {//Chưa login
                                    caseOptions(2); //Đẩy thống kê
                                }
                            } else {
                                Toast.show({text: "Bạn đã lựa chọn đáp án này.", id: "gv", type: "warning"});
                            }
                        }
                    }
                } else {//Chương trình giải trí
                    if ($(".Answers a.active").length == 0 && id_answered != Statistic.id_answered) {//Chưa trả lời
                        Statistic.id_answered = id_answered;
                        $(this).addClass("active");
                        Toast.progress({});
                        if (User.isLogin()) {
                            caseOptions(1);
                        } else {
                            caseOptions(2);
                        }
                    }
                    else {
                        Toast.show({text: "Bạn đã trả lời, xin vui lòng đợi.", id: "gv", type: "warning"});
                    }
                }
            } else {
                Toast.show({text: "Câu hỏi này đã kết thúc, xin vui lòng đợi.", id: "gv", type: "warning"});
            }
        });
        $(".btnStatistic").on("tap", function () {
            _this.redirect("index/statistic");
        });
        /*
         *@Active câu đã trả lời 
         */
        $(".Answers a.active").removeClass("active");
        if (Statistic.id_answered != 0 && Statistic.id_question == Program.id_question) {
            $("#page_indexindex #answerid_" + Statistic.id_answered).addClass("active");
        }
    },
    pushResult: function (options) {
        var params = {
            case: 0,
            answered_number: Answer.data.answered_number,
            exactly_number: Answer.data.exactly_number,
            time_total: 0,
            total_question: 0
        };
        $.extend(params, options);
        var HtmlWarning;
        var user = User.fullname == "" ? "" : " " + User.fullname;
        params.case = Program.type_qa == 1 ? "chinh su" : params.case;
        switch (params.case) {
            case 1://1 - thành viên chưa đăng ký - ko trả lời câu hỏi
                HtmlWarning = '<div class="Result_Warning">\n\
                                    <h4>Cảm ơn bạn đã tham gia chương trình</h4>\n\
                                    <p>Bạn hãy <b>đăng nhập</b> và tham gia trả lời câu hỏi để nhận những phần thưởng bất ngờ từ chương trình</p>\n\
                                   </div>';
                break;
            case 2://2 thành viên chưa đăng ký - có trả lời câu hỏi
                HtmlWarning = '<div class="Result_Warning">\n\
                                    <h4>Cảm ơn bạn đã tham gia chương trình</h4>\n\
                                    <p>Bạn đã trả lời được <b>' + params.exactly_number + '</b> câu đúng trong tổng số <b>' + params.total_question + '</b> câu.<p>\n\
                                    <p> Bạn hãy <b>đăng nhập</b> để tích điểm và nhận thưởng từ chương trình</p>\n\
                                   </div>';
                break;
            case 3:// 3 thanh viên đăng ký - ko trả lời
                HtmlWarning = '<div class="Result_Warning">\n\
                                    <h4>Cảm ơn bạn' + user + ' đã tham gia chương trình</h4>\n\
                                    <p>Bạn đã không tham gia trả lời câu hỏi, hãy trả lời các câu hỏi từ chương trình để nhận các phần quà hấp dẫn.</p>\n\
                                   </div>';
                break;
            case 4://4 thành viên đăng ký và có trả lời câu hỏi - có câu trả lời đúng
                HtmlWarning = '<div class="Result_Warning">\n\
                                    <h4>Cảm ơn bạn' + user + ' đã tham gia chương trình</h4>\n\
                                    <p>Bạn đã trả lời đúng <b>' + params.exactly_number + '</b> câu trên tổng số <b>' + params.total_question + '</b> câu</p>\n\
                                    <p>trong thời gian là</p>\n\
                                    <h5>' + Program.convertTime(parseInt(params.time_total)) + '</h5>\n\
                                   </div>';
                break;
            case 5://5 thành viên đăng ký có trả lời mà ko đúng câu nào
                HtmlWarning = '<div class="Result_Warning">\n\
                                    <h4>Cảm ơn bạn' + user + ' đã tham gia chương trình</h4>\n\
                                    <p>Bạn đã không trả lời đúng câu nào trên tổng số ' + params.total_question + ' câu</p>\n\
                                    <p>Hãy tham gia trả lời câu hỏi vào chương trình lần sau để nhận các phần quà hấp dẫn.</p>\n\
                                   </div>';
                break;
            default :
                HtmlWarning = '<div class="Result_Warning">\n\
                                    <h4>Cảm ơn bạn' + user + ' đã tham gia chương trình</h4>\n\
                                    <p>Chương trình tiếp theo sẽ được phát sóng vào lúc ' + Program.time + '.</p>\n\
                                   </div>';
                break;
        }
        $(".Answers_wrapper").remove();
        var Html_Button = '<div class="center"><a class="btnClose"><i class="fa fa-close"></i>Đóng lại</a></div>';
        if ($(".Question .Inner").length > 0) {
            $(".Question .Inner").html(HtmlWarning + Html_Button);
            $(".Question").addClass("zoomIn animated");
        } else {
            var Html_Question = '<div class="Question_wrapper">\n\
                        <div class="Block"></div>\n\
                        <div class="Question zoomIn animated">\n\
                        <div class="Inner">' + HtmlWarning + Html_Button + '</div> </div>\n\
                    </div>';
            $("#page_indexindex .Scroller_Inner").html(Html_Question);
        }

        $(".Question .btnClose").on("tap", function () {
            //new Popup().open("", "ZoomIn");

            if (intro != null) {
                intro.stop();
            }
            if (background != null) {
                background.stop();
            }
            Program.id_tvshow = 0;
            Toast.close();
            socket.io.disconnect();
            _this.redirect("index/home?back=true");
            Statistic.remove();
            Program.LastQuestion.remove();
            refreshSlide();
        });
        //Save result
        var Data_Question = '<div class="Question_wrapper">\n\
                        <div class="Block"></div>\n\
                        <div class="Question">\n\
                        <div class="Inner">' + HtmlWarning + Html_Button + '</div> </div>\n\
                    </div>';
        Answer.reset(); //reset câu đã trả lời;
        //new Popup().close();
    },
    runSocket: function () {
        var TimeRecieved = 0;
        /*
         *@7. Client kết nối muộn 
         */
        socket.on('responConnecttwo', function (data) {
//            console.log("====== responConnecttwo =====");
            //console.log(data);
//            console.log(_this.LAYOUT);
     
            if (data != null && Program.id_tvshow == data.id_tvshow && _this.LAYOUT != "#page_indexhome") {
                Toast.progressNext();
                Program.id_show = data.show_id;
                Answer.init();
                //console.log("Program.is_stopped: " + Program.is_stopped);
                if (data.stop_vote == 0 && data.question != null && Program.is_stopped == false) {

                    //console.log("Template.isLoaded: " + Template.isLoaded);
                    //console.log("Program.is_question_recieved: " + Program.is_question_recieved);

                    if (Program.is_question_recieved == false) {
                        TimeRecieved = _this.Timestamp.getDateTimeMilliseconds();
                        //console.log(Statistic.id_question + " - " + data.id_question);
                        if (Statistic.id_question != data.id_question) {
                            Statistic.remove();
                        }

                        Program.LastQuestion.save(data);
                        Program.activeContent();
                        _this.soundEffect("start");
                        //new Popup().close();
                    }
                } else {// Đã dừng câu hỏi
                    if (_this.LAYOUT == "#page_indexstatistic") {
                        setTimeout(function () {
                            //new Popup().open("popup/wait", "ZoomIn");
                            _this.redirect("index/index");
                        }, 500);
                    } else {
                        //new Popup().open("popup/wait", "ZoomIn");
                    }

                    if (!Program.is_stopped) {//Chương trình chưa dừng
                        Toast.button({
                            text: "Chương trình đang chuẩn bị câu hỏi, xin hãy đợi trong ít phút.",
                            position: "bottom",
                            width: 280,
                            tap: "close"
                        });
                    } else {
                        //new Popup().open("popup/wait", "ZoomIn");
                        if (Program.time != undefined) {
                            var text = "Chương trình sẽ được phát sóng vào lúc " + Program.time + "<br/>Cảm ơn bạn đã tham gia.";
                            Toast.show({text: text,
                                position: "bottom",
                                width: 280
                            });
                        }
                    }

                    //Statistic.remove();
                    //Program.LastQuestion.remove();
                }
            }
        });
        /*
         *@11. Nhận gói câu hỏi 
         *@Param data: Gói câu hỏi kiểu JSON
         */
        socket.on('addOneVote', function (data) {
//            console.log("====== addOneVote =====");
//            console.log(datconsole.loga);

            if (data != null && Program.id_tvshow == data.id_tvshow && _this.LAYOUT != "#page_indexhome") {
                Program.id_show = data.show_id;
                Answer.init();
                TextPanel.close();
                Program.is_question_recieved = true;
                Statistic.remove();
                Program.LastQuestion.remove();
                TimeRecieved = _this.Timestamp.getDateTimeMilliseconds();
                Program.LastQuestion.save(data);
                Program.activeContent();
                _this.soundEffect("start");
                //new Popup().close();

                //Nếu không ở trang index thì cho quay lại index
                if (_this.LAYOUT != "#page_indexindex") {
                    _this.redirect("index/index");
                    setTimeout(function () {
                        //Clear trang thống kê
                        $("#page_indexstatistic").empty();
                    }, 500);
                } else {
                    $("#page_indexstatistic").empty();
                }

            }
        });
        /*
         *@12. Stop vote  
         *@Param id_tvshow: Id trương trình
         *@Param id_show:
         *@Param id_question: Id câu hỏi hiện tại
         */


        socket.on('stop_vote_client', function (id_tvshow) {
            //socket.on('stop_vote_client', function (id_tvshow, id_question) {
            //console.log("=====stop_vote_client=====");
            if (Program.id_tvshow == id_tvshow) {
                Answer.isStop = true;
                Program.is_question_recieved = false;
                var TimeStop = _this.Timestamp.getDateTimeMilliseconds();
                var result = parseInt(TimeStop - TimeRecieved);
                // console.log(result);
                if (result > 1400) {
                    //new Popup().open("popup/wait", "ZoomIn");
                }
                _this.soundEffect("stop");
                TextPanel.close();
                Toast.close();
                if (_this.LAYOUT == "#page_indexstatistic") {
                    setTimeout(function () {
                        _this.redirect("index/index");
                        $("#page_indexstatistic").empty();
                    }, 500);
                }
                if (Program.type_qa == 1) {
                    Toast.button({text: "Cảm ơn bạn đã tham gia trả lời. Xin hãy chờ câu hỏi tiếp theo.", id: "gv", position: "bottom", timeout: 15000, width: 280, tap: "close"});
                } else {
                    Toast.button({text: "Xin đợi kết quả...", position: "bottom", id: "gv", timeout: 15000, tap: "close"});
                }
            }
        });
        /*
         *@II. Socket thêm
         */
        //1. Start 1 chuongs trinh
        socket.on('push_client_start_show_id', function (id_show, id_tvshow) {
            // console.log("========push_client_start_show_id==========");
            //console.log("id_show: " + id_show + " - id_tvshow: " + id_tvshow);
            if (Program.id_tvshow == id_tvshow) {
                Toast.close();
                Toast.button({id: "gv",
                    text: "Chương trình đã bắt đầu<br/> Xin vui lòng đợi câu hỏi trên màn hình.",
                    position: "bottom",
                    height: 45,
                    timeout: 10000,
                    id:"gv",
                            tap: "close"
                });
                //new Popup().open("popup/wait", "ZoomIn");

                Program.id_show = id_show;
            }
        });
        //2. Stop chuongs trinh
        socket.on('push_client_stop_show_id', function (id_show, id_tvshow, total_question) {
            //console.log("========= Stop chuongs trinh ===========");
            console.log("total_question: " + total_question);
            //console.log("id_show: " + id_show + " - id_tvshow: " + id_tvshow);
            if (Program.id_tvshow == id_tvshow) {

                if ($("#page_indexstatistic").hasClass("page_active")) {
                    _this.redirect("index/index");
                }
                Toast.close();
                if (User.isLogin()) {
                    if (Answer.isAnswer()) {
                        if (Answer.data.exactly_number > 0) {
                            $.ajax({
                                url: _this.Base_Api + "get-score?show_id=" + Program.id_show + "&user_id=" + User.id,
                                success: function (data) {
                                    Program.pushResult({case: 4, time_total: data.time_total, exactly_number: data.point, total_question: total_question});
                                }
                            });
                        } else {
                            Program.pushResult({case: 5, total_question: total_question});
                        }
                    } else {
                        Program.pushResult({case: 3, total_question: total_question});
                    }
                } else {//Chưa đăng nhập
                    if (Answer.isAnswer()) {
                        Program.pushResult({case: 2, total_question: total_question});
                    } else {
                        Program.pushResult({case: 1, total_question: total_question});
                    }
                }
            }

        });
        //3. nhạn ket qua 1 cau hoi
        socket.on('push_client_result_vote', function (data) {
            if (Program.id_tvshow == data.id_tvshow) {

                //console.log("========== push_client_result_vote ============");
                //console.log("Server => id_show: " + data.idshow + " - id_tvshow: " + data.id_tvshow + " - id_question: " + data.id_question + " - id_answer: " + data.choice);
                //console.log("Client => id_show: " + Program.id_show + " - id_tvshow: " + Program.id_tvshow + " - id_question: " + Program.id_question + " - id_answer: " + Statistic.id_answered);

                //console.log(Data);
                if (Statistic.id_answered > 0) {
                    if (Program.id_show == data.idshow &&
                            Program.id_tvshow == data.id_tvshow &&
                            Program.id_question == data.id_question &&
                            Statistic.id_answered == data.choice) {

                        Answer.save.exactly_number(); //tăng câu trả lời đúng
                        Toast.button({text: "Bạn đã trả lời chính xác. Hãy chờ câu hỏi tiếp theo.", id: "gv", position: "bottom", timeout: 10000, width: 280, tap: "close"});
                    } else {
                        Toast.button({text: 'Bạn đã trả lời "chưa" chính xác. Hãy chờ câu hỏi tiếp theo.', id: "gv", position: "bottom", timeout: 10000, width: 280, tap: "close"});
                    }
                } else {
                    Toast.button({text: "Bạn đã bỏ qua câu hỏi này. Hãy chờ câu hỏi tiếp theo.", id: "gv", position: "bottom", timeout: 10000, width: 280, tap: "close"});
                }
            }
        });

        //4. Push quang cao
        socket.on('push_client_ads', function (ar_tvshow, ar_advs) {
           // console.log("push_client_ads");
            //console.log(ar_tvshow);
           // console.log(ar_advs);
            for (var i = 0; i < ar_tvshow.length; i++) {
                if (ar_tvshow[i] == Program.id_tvshow) {
                    Toast.close();
                    Dialog.showAdv(JSON.parse(ar_advs));
                    return;
                }
            }
        });
    }
};

var Answer = {
    isStop: false,
    data: {
        id_show: 0,
        exactly_number: 0,
        answered_number: 0
    },
    isAnswer: function () {
        return this.data.answered_number;
    },
    reset: function () {
        this.data.exactly_number = 0;
        this.data.answered_number = 0;
        _this.storage.remove("Answer_" + Program.id_tvshow);
    },
    save: {
        exactly_number: function () {
            if (Program.id_show == Answer.data.id_show) {
                Answer.data.exactly_number += 1;
                _this.storage.set("Answer_" + Program.id_tvshow, JSON.stringify(Answer.data));
            } else {
                Answer.data.exactly_number = 1;
                Answer.data.id_show = Program.id_show;
                _this.storage.set("Answer_" + Program.id_tvshow, JSON.stringify(Answer.data));
            }
        },
        answered_number: function () {
            if (Program.id_show == Answer.data.id_show) {
                Answer.data.answered_number += 1;
                _this.storage.set("Answer_" + Program.id_tvshow, JSON.stringify(Answer.data));
            } else {
                Answer.data.answered_number = 1;
                Answer.data.id_show = Program.id_show;
                _this.storage.set("Answer_" + Program.id_tvshow, JSON.stringify(Answer.data));
            }
        }
    },
    init: function () {
        var local = _this.storage.get("Answer_" + Program.id_tvshow);
        if (local != "") {
            local = JSON.parse(local);
            $.extend(this.data, local);
            //console.log(this.data.exactly_number);
        }
    }
};
